package com.wiselink.naver.productcatalog.request.enums;

import lombok.Getter;

/**
 * 商品销售状态代码
 * <p>
 * SALE(销售中)、OUTOFSTOCK(断货)、SUSPENSION(停止销售)根据当前状态可变更的状态如下。
 * SALE（销售中）→变更为OUTOFSTOCK（断货）（库存数量变更为0）
 * SUSPENSION（停止销售）、OUTOFSTOCK（断货）→ SALE（销售中）变更（从断货变更到销售中时需输入库存数量）
 * SALE（销售中）、OUTOFSTOCK（断货）、WAIT（待售）→改为SUSPENSION（停止销售）
 * 如果货物的库存数量为0，则该状态将保持OUTOFSTOCK（断货）状态，与交货值无关。 但是，如果当前状态为SUSPENSION（停止销售），即使传送的库存数量为0，也会维持SUSPENSION（停止销售）。
 * <p>
 * SALE(판매 중), OUTOFSTOCK(품절), SUSPENSION(판매 중지) 현재 상태에 따라 변경 가능한 상태는 다음과 같습니다.
 * SALE(판매 중) → OUTOFSTOCK(품절)으로 변경(재고 수량은 0으로 변경됨)
 * SUSPENSION(판매 중지), OUTOFSTOCK(품절) → SALE(판매 중)로 변경(품절에서 판매 중으로 변경 시 재고 수량 입력 필수)
 * SALE(판매 중), OUTOFSTOCK(품절), WAIT(판매 대기) → SUSPENSION(판매 중지)으로 변경
 * 상품의 재고 수량이 0인 경우 상태는 전달된 값과 무관하게 OUTOFSTOCK(품절) 상태를 유지합니다. 단, 현재 상태가 SUSPENSION(판매 중지)이면 전송된 재고 수량이 0이어도 SUSPENSION(판매 중지)으로 유지됩니다.
 */
@Getter
public enum StatusType {
    /**
     * WAIT
     */
    WAIT("WAIT", "WAIT"),
    /**
     * 销售中
     */
    SALE("판매 중", "销售中"),
    /**
     * 断货
     */
    OUTOFSTOCK("품절", "断货"),
    /**
     * UNADMISSION
     */
    UNADMISSION("UNADMISSION", "UNADMISSION"),
    /**
     * REJECTION
     */
    REJECTION("REJECTION", "REJECTION"),
    /**
     * 停止销售
     */
    SUSPENSION("판매 중지", "停止销售"),
    /**
     * CLOSE
     */
    CLOSE("CLOSE", "CLOSE"),
    /**
     * PROHIBITION
     */
    PROHIBITION("PROHIBITION", "PROHIBITION"),
    /**
     * DELETE
     */
    DELETE("DELETE", "DELETE");

    private final String kname;
    private final String cname;

    StatusType(String kname, String cname) {
        this.kname = kname;
        this.cname = cname;
    }
}
